<?php

require_once("svconfig.php");
require_once("common.php");
require_once("Session.class.php");
require_once("User.class.php");

/* Funciones generales */
function getUrlOf($page) {
	return "index.php?p=". $page;
}

/* Funciones de base de datos */
// Crea una global $db con una instancia conectada de Database
function &connectDb() {
	require_once("Database.class.php");
	if(!isset($GLOBALS['db']))
		$GLOBALS['db'] =& new Database(DB_CONNECTION_STRING, DB_DATABASE);
		// Si descomentan la proxima linea las consultas se imprimen en la pagina
		// sin modificar la base de datos
//	$GLOBALS['db']->setDebug(true, true);
	return $GLOBALS['db'];
}

// Crea una global $svdb con una cinstancia conectada de SVDatabase
function &connectSVDb() {
	require_once("SVDatabase.class.php");
	if(!isset($GLOBALS['svdb']))
		$GLOBALS['svdb'] =& new SVDatabase(connectDb());
	return $GLOBALS['svdb'];
}

/* Functions de Smarty */
define('SMARTY_DIR', 'modelo/smarty/');
define('COMPILED_DIR', 'modelo/smarty/compiled');
define('CACHE_DIR', 'modelo/smarty/cache');
define('TEMPLATE_DIR', 'templates');
define('CONFIG_DIR', 'configs');
require_once(SMARTY_DIR . "Smarty.class.php");

// Crea una instancia de Smarty con los directorios bien configurados
function &createSmarty() {
	$tpl =& new Smarty();
	$tpl->compile_dir = COMPILED_DIR;
	$tpl->cache_dir = CACHE_DIR;
	$tpl->template_dir = TEMPLATE_DIR;
	$tpl->config_dir = CONFIG_DIR;
	$tpl->force_compile = true;
	return $tpl;
}

// Le asigna un array a la instancia global $smarty
function assignArray($arr) {
	global $smarty;
	foreach($arr as $key => $value) {
		$smarty->assign($key, $value);
	}
}

// Le asigna todos los parametros del GET y el POST a la
// instancia global de $smarty
function assignQueryVars() {
	global $smarty;
	assignArray($_POST);
	assignArray($_GET);
}

// Muestra un template por defecto de error
$error_displayed = false;
function displayError($message, $title = '') {
	global $smarty;
	$smarty->assign('message', $message);
	$smarty->assign('title', $title);
	$smarty->display('error.tpl');
	$GLOBALS['error_displayed'] = true;
}

// Crea la instancia global de $user y lo registra en $smarty
function crearGlobalUsuario() {
  $GLOBALS['user'] =& $GLOBALS['session']->get('user');
  if(empty($GLOBALS['user'])) {
    $GLOBALS['user'] =& new User('visitante', 'visitante');
  }
  $GLOBALS['smarty']->assign_by_ref('user', $GLOBALS['user']);
}
$session =& new Session();
$smarty =& createSmarty();
crearGlobalUsuario();
?>